Từ điển
Dịch văn bản
 
Tất cả từ điển
Tra từ
Hỏi đáp nhanh
 
 
 
Kết quả
Vietgle Tra từ
Chuyên ngành Anh - Việt
TCP (Transmission Control Protocol)
|
Tin học
TCP là một thành phần của tầng chuyển tải (transport layer) trong bộ giao thức TCP/IP của Internet. Nó nằm trên giao thức IP (Internet Protocol) trong ngăn xếp giao thức cà cung cấp dịch vụ truyền dữ liệu tin cậy qua các kết nối. Giả sử bạn đang viết một ứng dụng mạng đòi hỏi trao đổi các bản tin và dữ liệu với các máy tính ở mạng khác. Chương trình của bạn phải có khả năng tạo yêu cầu từ các giao thức tầng thấp hơn để có thể truyền dữ liệu. Đồng thời, bạn không cần viết các thủ tục để kiểm tra dữ liệu đã nhận được hay chưa. Đây là công mà các giao thức như TCP thực hiện. TCP sau đó dùng IP để gởi thông tin qua mạng. Lý thú thay, IP là giao thức mạng phi kết nối không bảo đảm truyền dữ liệu một cách tin cậy. Các bản tin và dữ liệu TCP (gọi là segment, sẽ được mô tả sau) được bao bọc trong các datagram IP và được chuyển qua mạng. Một đặc điểm lý thú của TCP là trước đây, khi định nghĩa về Internet, IP không phải là một bộ phận trong thiết kế. Trong quá trình phát triển, Denny Cohen ở USC cho rằng các chức năng hướng kết nối của TCP là không cần thiết đối với một số kiểu truyền dữ liệu và chúng tạo ra phí tổn phát sinh. Ông ta đề nghị tách TCP để thỏa mãn yêy cầu “đúng giờ hơn là chính xác”. Điều cần thiết là tìm cách lấy dữ liệu nhanh chóng để chuyển sang hệ thống khác. Như vậy, TCP trở thành TCP và IP. Trong thời gian đó, UDP (User Datagram Protocol) được hình thành để cung cấp giao diện ứng dụng cho IP. Cả TCP và UDP dùng IP. Trong khi UDP còn nằm trong tầng chuyển tải, nó không có chức năng tin cậy nào cả về TCP. Nó có các trường trong tiêu đề để xác định địa chỉ nguồn và đích. Như vậy, một ứng dụng có thể kết nối với một ứng dụng khác trong hệ thống khác mà không cần các chức năng tin cậy trong TCP. TCP ban đầu được phát triển để kết nối nhiều loại máy tính khác nhau trong các viện nghiên cứu, trường đại học, và các tổ chức chính phủ. Phương pháp bao bọc được cài đặt vì những nhà thiết kế không muốn người chủ mạng phải thay đổi sơ đồ mạng của họ để liên kết với các mạng khác. Người ta giả sử rằng mỗi mạng phải cài đặt kỹ thuật truyền thông riêng. Các bộ định tuyến (trước đây gọi là gateway) cung cấp dịch vụ bao bọc nầy. Để biết thêm lịch sử của TCP, xem mục “TCP/IP (Transmision Control Protocol/Internet Protocol)”. Để biết lịch sử tổng quát của Internet, xem mục “Internet”. TCP được mô tả trong RFC 793 của IETF. Một số sửa đổi được trình bày trong RFC 1122 và các mở rộng trong RFC 1323. Các chức năng của TCP Có lẽ đặc trưng quan trọng nhất của TCP là nó thiết đặt các kết nối end-to-end giữa hai máy tính cần trao đổi dữ liệu. Kết nối end-to-end là ảo vì nó được tạo trong phần mềm và mở rộng ra các kết nối point-to-point. Điều nầy được trình bày trên hình T-3. Để ý rằng kết nối point-to-point là giữa hai hệ thống vật lý chẳng hạn như máy chủ đến bộ định tuyến, hoặc bộ định tuyến đến bộ định tuyến khác, trong khi kết nối end-to-end là giữa các hệ thống đầu cuối. Kết nối end-to-end không đơn thuần kết thúc tại giao diện của mạng. Nó thực sự mở rộng vào tầng ứng dụng đối với một quá trình cụ thể đang chạy trên máy tính. Mỗi máy tính tạo ra một socket, và các đầu cuối đính kèm socket nầy. Mỗi socket có địa chỉ, gọi là số cổng. Bạn có thể nghĩ một socket như là máy điện thoại ở hai đầu, và cổng như là số điện thoại. Cổng có địa chỉ đã “quen thuộc”. Ví dụ, các Web server có địa chỉ quen thuộc là 80, vì thế khách Web luôn luôn kết nối với cổng nầy khi truy cập Web server. Khách và chủ Web thiết lập kết nối end-to-end tạm thời ở cổng nầy để trao đổi dữ liệu. Địa chỉ IP đầy đủ của Web server có dạng x.x.x.x:80, nhưng thường không cần thiết phải nhập số cổng. Hình T-3. TCP thiết lập kết nối end-to-end trên các mạng nối nhau bởi bộ định tuyến. Một kết nối trước hết phải được yêu cầu bởi người gởi và bảo đảm bởi người nhận. Điều nầy cung cấp mức đầu tiên của độ tin cậy bằng cách bảo đảm rằng người nhận sẵn sàng nhận dữ liệu. Nó cũng chỉ ra cách TCP quản lý truyền dữ liệu. Nếu một ứng dụng cần phải truyền dữ liệu trực tiếp đến IP, IP sẽ bắt đầu gởi các gói dữ liệu đến đích. Nhưng nếu đích không làm việc (off-line) hoặc bận rộn, những gói nầy loại bỏ và bản thân IP không có cách nào để thông báo cho ứng dụng đó rằng các gói dữ liệu chưa được gởi đi. TCP quản lý điều nầy bằng cách gởi một yêu cầu kết nối đơn giản, và IP sẽ chuyển đi. Khi người nhận phản ứng, TCP bắt đầu chuyển nhiều thông tin hơn đến IP, bảo đảm rằng IP không bị mất điều khiển. Về mặt nầy, có thể TCP như là người điều khiển giao thông cho IP. Một số chức năng khác của TCP được trình bày dưới đây: Các kết nối TCP là full-duplex, là các kênh ảo hai chiều cho phép các đầu cuối gởi dữ liệu bất cứ lúc nào. Như vậy, kết nối nầy giống như hai kênh truyền và nhận riêng biệt. Các vùng đệm được dùng để giữ dữ liệu đến và đi để cho các hoạt động khác không bị tắt nghẽn do các quá trình truyền thông. Người nhận có thể báo đã nhận (acknowledge) các datagram cho người gởi. Phương pháp thông báo nầy được dùng theo nhiều cách, sẽ được trình bày sau. Điều khiển luồng (flow control) là cách để hai thông tin hợp tác tích cực với nhau trong tryền dữ liệu để tránh quá tải và mất mát các datagram do người gởi nhanh. Chức năng nầy cho phép các hệ truyền thích nghi với sức tải trên mạng và/hoặc với kích thước vùng đệm ở người nhận. Tuần tự là kỹ thuật để đánh số các datagram để người nhận có thể đặt chúng theo thứ tự đúng và xác định những datagram nào bị mất. Chức năng kiểm tra tổng (checksum) được dùng để bảo đảm tính toàn vẹn của các gói dữ liệu. Phân đoạn TCP Phân đoạn TCP là tên chính thức của gói dữ liệu. Một phân đoạn là thực thể mà TCP dùng để trao đổi dữ liệu với các đồng đẳng (peer) của nó. Phân đoạn nầynầy được bao bọc trong datagram IP và được truyền đi trên mạng. Phân đoạn có tiêu đề kích thước 20 byte và trường dữ liệu có chiều dài thay đổi. Các trường của phân đoạn nầynầy được trình bày dưới đây, xem hình T-4. Nhớ rằng bất cứ máy trạm nào cũng có thể gởi một phân đoạn chỉ chứa tiêu đề là không chứa dữ liệu để cung cấp thông tin về kết nối, như báo đã nhận (acknowledge). Hình T-4 Cấu trúc của phân đoạn TCP. Cổng nguồn và đích Chứa số hiệu cổng của các socket ở nguồn và đích. Số hiệu chuỗi Trường nầy chứa thông tin cho người nhận, dùng để xác định dữ liệu trong phân đoạn và nó nằm ở đâu trong dòng dữ liệu đã gởi. Người nhận có thể dùng giá trị nầy để sắp xếp lại các gói đã đến không có thứ tự. Nó cũng có thể chỉ ra rằng phân đoạn bị mất. Số hiệu báo đã nhận Trường nầy được người nhận dùng để thông báo cho người gởi biết rằng gói dữ liệu gởi đi đã được nhận. Số trong trường nầy thực chất là số hiệu chuỗi cho phân đạn tiếp theo. Số nầy được tính bằng cách tăng giá trị trong trường số hiệu chuỗi. Độ dài tiêu đề Trường nầy xác định chiều dài của tiêu đề. Mã Trường nầy chứa các mã bit như sau, dùng làm cờ để chỉ ra các điều kiện nhất định: URG (urgent). Bit nầy là 1 nếu có thông tin trong trường Urgent Pointer của tiêu đề. ACK (acknowledgement). Nếu ACK là 1, điều nầy có nghĩa là phân đoạn là một phần của hội thoại đang diễn ra và số trong trường Acknowledment Number là hợp lệ. Nếu ACK là 0, cà SYN là 0, phân đoạn nầy là yêu cầu thiết lập kết nối. PSH (push). Bit nầy để người gởi yêu cầu người nhận gởi dữ liệu trực tiếp đến ứng dụng, không cần vùng đệm. RST (reset). Nếu có giá trị 1, kết nối là không hợp lệ vì nhiều lý do và phải được tái thiết (reset). SYN (synchronize). Được dùng cùng với ACK để yêu cầu kết nối hoặc chấp nhận kết nối. SYN=1 và ACK=0 là một yêu cầu kết nối. SYN=1 và ACK=1 là chấp nhận kết nối. SYN=0 và ACK=1 là báo đã nhận cho báo đã nhận. FIN (finish). Bit nầy chỉ ra kết nối phải được kết thúc. Kích thước của sliding-window Truyền thông tin về kích thước không gian dùng được trong vùng đệm của người nhận. Trường nầy được người nhận dùng để thông báo cho người gởi làm chậm lại việc truyền vì người gởi đang gởi dữ liệu nhanh hơn so với tốc độ xử lý của người nhận. Nếu người nhận muốn người gởi kết thúc việc gởi, nó sẽ gởi một phân đoạn trong đó trường nầy có giá trị 0. Sau đó, khi có thể nhận lại dữ liệu, nó gởi lại phân đoạn nầy trong đó trường nầy có giá trị khác 0, cùng với giá trị thích hợp trong trường Acknowledgement Number. Checksum Cung cấp giá trị kiểm tra lỗi để bảo đảm tính toàn vẹn của phân đoạn. Urgent Poiter Trường nầy được người gởi dùng để chi ra vị trí của dữ liệu khẩn cấp. Options Chứa các tùy chọn đặc biệt. Data Trường nầy có độ dài thay đổi, chứa bản tin hoặc dữ liệu từ các ứng dụng khác. Thiết lập kết nối Tầng chuyển tải (transport layer) thiết lập kết nối trên đó dữ liệu được truyền một cách tin cậy trong quá trình kết nối. Trước hết kết nối được thiết lập, dữ liệu được truyền đi, và kết nối kết thúc. Việc thiết lập một kết nối chỉ là vấn đề gởi yêu cầu kết nối đến máy đích. Nếu được, nó gởi thông báo đã nhận yêu cầu kết nối (connection acknowledgement message). Hệ thống sau đó có thể thỏa thuận về tham số của lần làm việc hiện hành (hoặc các tham số trong trường Options của phân đoạn). Ví dụ, trong thông báo của một trạm có thể nói rằng nó không thể xử lý sức làm việc lớn hơn 2.000 byte. Ở trạm đầu kia có thể thông báo rằng nó không thể xử lý sức tải quá 1.000 byte. Sau đó giá trị thấp hơn được thỏa thuận. Có nhiều tham số khác được thỏa thuận để cải tiến hiệu suất truyền. Kết nối được thiết lập bằng cách dùng cơ chế bắt tay ba chiều (three-way handshake), được thực hiện như sau: 1. Máy A (người gởi) gởi một phân đoạn TCP đến máy B với cờ SYN là 1 và ACK là 0. Một số hiệu chuỗi ban đầu được chèn vào trường Sequence Number của tiêu đề. Đây là số hiệu chuỗi mà máy A sẽ dùng để gởi các phân đoạn đến máy B. 2. Máy B lưu trữ số hiệu chuỗi và trả một phân đoạn đến máy A trong đó cả hai cờ SYN và ACK là 1. Để báo rằng nó đã nhận số hiệu chuỗi của máy A, máy B tăng số hiệu chuỗi lên 1 và chèn nó vào trường Sequence Number. Đây là số hiệu chuỗi mà máy B sẽ dùng để gởi các phân đoạn đến máy A. 3. Máy A bây giờ có thể báo cho máy B rằng nó đã nhận thông báo nhận của máy B. Nó gởi một phân đoạn trong đó cờ ACK=1 và SYN=0. Nó cũng tăng số hiệu chuỗi nhận được từ máy B lên 1 và chèn vào trường Acknowledgement để cho thấy rằng nó chấp nhận cách đánh số hiệu chuỗi của máy B. Sau khi dữ liệu được truyền, lần làm việc kết thúc. Mát A gởi lá cờ FIN=1 đến máy B. Sau đó máy B phản hồi bằng ACK=1 và FIN=1, và máy A phản hồi lại bằng ACK=1. TCP có thể xử lý các tham số kết nối trong quá trình thiết đặt kết nối. Một trong những tham số nầy là tham số trì hoãn đường truyền. Giả sử máy A gởi một phân đoạn đến máy B và máy B trả lại thông báo nhận, nhưng vì lý do nào đó thông báo nầy không đến được máy A đúng lúc. Máy A phải giả sử rằng máy B đã không nhận tín hiệu truyền, vì thế nó gởi lại phân đoạn. Cùng lúc đó, thông báo nhận “đã mất” cuối cùng tìm được đường đến máy A và phân đoạn được gởi lại cũng đến máy B, và bây giờ máy B có hai phân đoạn như nhau. Lượng thời gian mà người gởi chờ để nhận thông báo nhận không thể là giá trị cố định vì một số liên kết, như vệtinh, có thời gian trì hoãn lâu hơn những liên kết khác. TCP có thể thỏa thuận giá trị nầy bằng cách đo thời gian nhận phản hồi. Sau đó nó dự tính giá trị trì hoãn hai chiều và dùng giá trị nầy để định thời gian truyền và thông báo nhận cho một kết nối. Có nhiều tham số truyền thông khác mà TCP phải xử lý để cung cấp các dịch vụ tin cậy. Để biết thêm chi tiết về kết nối và cơ chẫẳ điều khiển trong tầng chuyển tải, xem mục “Từ mục liên quan” ở dưới đây. Bạn nên tham khảo các Web site dưới đây để biết thêm về giao thức TCP/IP. Các RFC 1122 và 1323 cung cấp thông tin về những sửa đổi và mở rộng của TCP. Một RFC thú vị khác là RFC 2001 với tên “TCP slow start, congestion avoidance, fast retransmit, and fast recovery algorithms”. Ngoài ra, IETF có nhiều nhóm làm việc đang mở rộng tầng chuyển tải để truyền thông đa phương tiện (multimedia), kết nối vệ tinh và các vấn đề khác. Có thể xem Web site của các nhóm làm việc IETF ở dưới đây. Từ mục liên quan Acknowledgment; Congestion; Connections Establishment; Data Communication Concepts; Flow-Control Mechanics; Fragmentation of Frames and Packets; Frame Switch; Handshake Procedures; Internet; IP (Internet Protocol); NAK (Negative Acknowledgment); Network Concepts; QoS (Quality of Service); TCP/IP (Transmission Control Protocol); và Web Technologies and Concepts. Thông tin trên Internet Transmission Control Protocol (RFC 793)-1981! http://www.internic.net/rfc/rfc793. txt TCP revision (RFC 1122) http://www.internic.net/rfc/rfc1122. txt TCP Extensions for High Performance (RFC 1323) http://www.internic.net/rfc/rfc1323. txt A Primer On Internet and TCP/IP Tools and Utilities (RFC 2151) http://www.internic.net/rfc/rfc2151. txt TCP Slow Start, Congestion Advoidance, Fast Retransmit, and Fast Recovery Algorithms (RFC 2001) http://www.internic.net/rfc/rfc2001. txt TCP Extension for High-Speed Paths (RFC 1185) http://www.internic.net/rfc/rfc1185. txt Extending TCP for Transactions (RFC 1379) http://www.internic.net/rfc/rfc1379. txt IETF Working Groups (select “Transport Area” link) http://www.ietf.org/html. charters/wg-dir. html A User’s Guide to TCP Windows http://www.ncsa.uiuc.edu/People/vwelch/net_perf/tcp_windows. html Charles Hedrick’s Introduction to the Internet Protocols http://oac3.hsc.uth.tmc.edu/staff/snewton/tcp-turtorial Thomas Riemer’s port numbers page http://www.con.wesleyan.edu/~triemer/network/regports. html U. C. Davis TCP/IP turtorial Gopher://gopher-chem. ucdavis.edu/11/Index/Internet_aw/Intro_the_Internet/intro.to.ip H. Gilbert’s Introdusction to TCP/IP paper http://pclt.cis.yale.edu/pclt/comm/tcpip.htm Yahoo!’s TCP/IP links page http://www.yahoo.com/Computers_and_Internet/Information_and_Documentation/Protocols/TCP_IP